package top.andoudou.generator.screw.entity;

import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.process.ProcessConfig;
import lombok.Data;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;

/**
 * @Description
 * @Date 2021/8/5
 * @Author 傻男人
 */
@Data
public class MysqlDBDocumentInfo implements Serializable {

    /**
     * db url
     * as: jdbc:mysql://172.16.10.150:13063/process?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
     */
    private String dbUrl;

    /**
     * 数据库用户名
     */
    private String dbUserName;

    /**
     * 数据库密码
     */
    private String dbPassword;


    /**
     * 数据库驱动
     */
    private String driverClassName;


    /**
     * file输出路径
     */
    private String fileOutputDir;

    /**
     * file输出类型
     */
    private EngineFileType fileOutputType;

    /**
     * 文档的文件名
     */
    private String docFileName;

    /**
     * 文档版本号
     */
    private String docVersion;

    /**
     * 文档描述
     */
    private String docDescription;


    /**
     * 创建 screw 的处理配置，一般可忽略
     * 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时，将生成指定表，其余表不生成、并跳过忽略表配置
     */
    private ProcessConfig processConfig = buildProcessConfig();


    private ProcessConfig buildProcessConfig() {
        return ProcessConfig.builder()
                // 根据名称指定表生成
                .designatedTableName(Collections.<String>emptyList())
                //根据表前缀生成
                .designatedTablePrefix(Collections.<String>emptyList())
                // 根据表后缀生成
                .designatedTableSuffix(Collections.<String>emptyList())
                // 忽略表名
                .ignoreTableName(Arrays.asList("flyway_schema_history"))
                // 忽略表前缀
                .ignoreTablePrefix(Collections.<String>emptyList())
                // 忽略表后缀
                .ignoreTableSuffix(Collections.<String>emptyList())
                .build();
    }

}
